/**
 * 动态规划, sum 记录累加的最大值，max 计算所有sum 的最大值
 * @param {number[]} nums
 * @return {number}
 */

const maxSubArray = nums => {

  let max = -Infinity, sum = 0
  nums.forEach(num => {
    sum = Math.max(sum + num, num)
    max = Math.max(sum, max)
  })
  return max
}

console.log(maxSubArray([-2, 1, -3, 4, -1, 2, 1, -5, 4]))